/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package administrador;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author daniel1.Silva
 */
public class ProActualizaStocksWeb extends Thread {

    //Parametros de Conexion Internet:
    int ProductosCargados;

    Conexion conexionLocal;
    PanelActualizacion panelAct;

    public ProActualizaStocksWeb(Conexion conexion,PanelActualizacion panelAct){

        conexionLocal=conexion;
        this.panelAct=panelAct;

    }

    public void run(){
        boolean procesa=true;
       // while(procesa){
           //Realiza las Actualizaciones:

          //La bandera de productos cargados:




          //Tomando la base de datos de la computadora local y su base de datos se Actualizara la base del Internet
          String IPCliente = "174.136.152.21";// "174.136.152.21";
        String nombre = "sexyusuario";//"daniel1";
        String password = "yxes1984";
        String dbcliente = "sexylocuras";
        String puerto = "3306";
          String IDCliente = "3";   // En el caso del identificador 1: Sexylocuras Centro (Padre Aguirre y Lamar)
                                    // Local 2 es el local de la Pricila
                                    // Local 3 es la bodega central


          //Realizo la conexion a la base de datos cliente:
          Conexion conexionWeb = new Conexion();
          if (!conexionWeb.conectarBase(nombre, password, puerto, dbcliente, IPCliente)) {
              System.out.println("No pudo establecer la conexion primera");
             // JOptionPane.showMessageDialog(panelAct, "No se pudo establecer conexion con la base de datos del Internet !!", "Informacion", JOptionPane.WARNING_MESSAGE);

          } else {
             // JOptionPane.showMessageDialog(panelAct, "Conecto a una base de Datos de Internet !!", "Informacion", JOptionPane.INFORMATION_MESSAGE);
              //Limpio el numero de productos cargados
             // conexionWeb.actualizarBase("delete FROM productos_locales where id_locales="+IDCliente+";");
             //Me parece mejor no dejar este codigo

              //Ahora realizo la consulta de los productos que actualmente tiene el internet:
              ResultSet catalogoPro = conexionWeb.consultarBase("SELECT p.products_id,p.products_quantity,p.products_status,products_image FROM products p;");
              int numfilas = conexionWeb.obtenerFilas(catalogoPro);
              ProductosCargados = 0;

              //Preparo la barra de progreso
              panelAct.txt_den.setText(String.valueOf(numfilas));



            // JOptionPane.showMessageDialog(panelAct, "El numero total de filas de la base central es !!" + numfilas, "Informacion", JOptionPane.INFORMATION_MESSAGE);

              int contadorAct = 0;
              int contandolistos = 0;

              //Creo los contadores de Productos y Errores
              int contadorActual = 0;
              int contadorInser = 0;
              int contadorErrorA = 0;
              int contadorErrorI = 0;


              try {
                  catalogoPro.beforeFirst();
                    int contador1=0;
                    int contador2=0;
                  while (catalogoPro.next()) {
                      //Pongo el lector de progresoo
                      //System.out.println("Los productos cargados son:" + p.ProductosCargados);
                      ProductosCargados++;

                      int porcentaje=(ProductosCargados*100)/Integer.valueOf(panelAct.txt_den.getText());
                      panelAct.barraProgreso.setValue(porcentaje);


                      int numero=ProductosCargados;
                      panelAct.txt_num.setText(String.valueOf(numero));
                      //----------------------------

                      int pID = catalogoPro.getInt(1);
                      int pCAN = catalogoPro.getInt(2);
                      int pSTA = catalogoPro.getInt(3);
                      String pIMG = catalogoPro.getString(4);

                      //Saco el nombre de la Imagen en minusculas
                      //le quito la extension
                      pIMG=pIMG.toLowerCase();
                      int largo=pIMG.length();
                      pIMG=pIMG.substring(0,largo-4);
                      


                      //Consulto la cantidad de los productos:
                      ResultSet cons = conexionWeb.consultarBase("SELECT sum(cantidad) FROM productos_locales where lower(codigo) like lower('" + pIMG + "') ;");

                      int filas = conexionWeb.obtenerFilas(cons);

                      if (filas > 0) {
                          //Si Existe el Producto
                          conexionWeb.consultarBase("START TRANSACTION;");

                          //Si la cantidad es cero tambien actualizo el estado:
                          boolean actual1=false;


                          if(pCAN==0){

                          //Realizo la Actualizacion de la Tabla Productos:
                          contador1++;
                          actual1 = conexionWeb.actualizarBaseResp("update products set  products_quantity=" + pCAN + ",products_status=0 where lower(products_image) like lower('" + pIMG + ".gif');");
                          }else{
                          contador2++;
                          actual1 = conexionWeb.actualizarBaseResp("update products set  products_quantity=" + pCAN + " where lower(products_image) like lower('" + pIMG + ".gif');");
                          }

                          if (actual1) {
                              conexionWeb.consultarBase("COMMIT;");
                              contadorActual++;
                          } else {
                              panelAct.area.append("**Errores en Actualizacion: \n");
                              panelAct.area.append("  Codigo\tNombre\tDescripcion\n\n");
                              panelAct.area.append(pID+"\t"+pCAN+"\n");
                              conexionWeb.consultarBase("ROLLBACK;");
                              contadorErrorA++;
                          }


                      } else {
                         

                      }

                  }
                    System.out.println("Actual(cero)="+contador1+" Actual(+)="+contador2);

              } catch (SQLException ex) {
                  Logger.getLogger(Productos.class.getName()).log(Level.SEVERE, null, ex);
              }
              //Finaliza la Actualizacion
              //Finaliza la barra de progreso:
              procesa = false;
              //-----------------------------

             // JOptionPane.showMessageDialog(panelAct, "Se realizo actualizaciones Exitosas:" + contadorActual + " de las cuales se produjeron: " + contadorErrorA + " ERRORES", "Informacion", JOptionPane.INFORMATION_MESSAGE);
             // JOptionPane.showMessageDialog(panelAct, "Se realizo inserciones Exitosas:" + contadorInser + " de las cuales se produjeron: " + contadorErrorI + " ERRORES", "Informacion", JOptionPane.INFORMATION_MESSAGE);
              String errores=panelAct.area.getText();
              System.out.println("El area de texto:"+errores+"|");

              panelAct.dispose();


          }




       // }


    }


}
